/**
 * Require: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
 * Usage:   <script src="https://epp-jslib.googlecode.com/hg-history/tip/src/epp-utils.js"></script>
 **/

function EppUtils() {}

/* 1.234,00 -> 1234.00 (NaN se nao conseguir) */
EppUtils.stringToNumber = function (decimalComoTexto) {
    if(decimalComoTexto === undefined || decimalComoTexto === null) return NaN
    if(typeof decimalComoTexto === 'number') return decimalComoTexto
    var stringProcessada = decimalComoTexto
            .replace(/[^\d\.,]/g, '') //tira tudo que não for numero, ponto e virgula
            .replace(/,/g, '.');       //troca virgula por ponto
    var idxUltimoPonto = stringProcessada.lastIndexOf('.');
    if(idxUltimoPonto > 0) {
        var parteInteira = stringProcessada.substring(0, idxUltimoPonto).replace(/\./g, '');
        stringProcessada = parteInteira + '.' + stringProcessada.substring(idxUltimoPonto+1);
    }
    if(stringProcessada.trim().length == 0) return NaN
    //* 1 para garatir que é numero
    return stringProcessada*1
}

EppUtils.formatNumber = function(numero, casasDecimais, prefixo, trocaVirgulaPorPonto) {
    casasDecimais = casasDecimais ? casasDecimais : 2;
    prefixo = prefixo ? prefixo : '';
    trocaVirgulaPorPonto = trocaVirgulaPorPonto ? trocaVirgulaPorPonto : false;
    numero = numero.toFixed(casasDecimais);
    if(trocaVirgulaPorPonto) numero = numero.replace(/\./, ',');
    return prefixo + numero;
}

EppUtils.getSelectedText = function () {
    if (document.getSelection) {    // all browsers, except IE before version 9
        var sel = document.getSelection().toString();
        // sel is a string in Firefox and Opera,
        // and a selectionRange object in Google Chrome, Safari and IE from version 9
        return sel;
    }
    else {
        if (document.selection) {   // Internet Explorer before version 9
            var textRange = document.selection.createRange ();
            return textRange.text;
        }
    }
}

EppUtils.download = function (conteudo, mimetype) {
    if(!mimetype) mimetype = "text/plain";
    var encodedUri = encodeURI("data:" + mimetype + ";charset=utf-8," + conteudo);
    window.open(encodedUri);
}

EppUtils.tableToCSV = function ($table) {
    var linhas = EppUtils.tableToArrays(text);
    return arraysToCsv(linhas);
}

EppUtils.textToCSV = function (text) {
    var linhas = EppUtils.textTableToArrays(text);
    return arraysToCsv(linhas);
}

EppUtils.arraysToCsv = function (linhas) {
    var csv = "";
    for (var l=0;l<linhas.length;l++) { 
        var colunas = linhas[l];
        for (var c=0;c<colunas.length;c++) { 
            csv += colunas[c] + ','
        };
        csv += '\n'
    };
    return csv;
}

EppUtils.textTableToArrays = function (text) {
    var rows = [];
    var linhas = text.split('\n');
    for (var l=0;l<linhas.length;l++) { 
        var row = [];
        var colunas = linhas[l].split('\t');
        for (var c=0;c<colunas.length;c++) { 
            row.push(colunas[c]);
        };
        rows.push(row);
    };
    return rows;
}

EppUtils.tableToArrays = function ($table) {
    var rows = [];
    $table.find('tr').each(function(i, tr) {
        var row = [];
        $( tr ).find('td,th').each(function(j, td) {
            row.push($(td).text());
        });
        rows.push(row);
    });
    return rows;
}







